import argparse

DEFAULT_CONFIG = {
    'input_dir': './',
    'output_dir': '../.dist',
    'verbose': False,
    'zip': True,
    'del': False
}


class ChineseArgumentParser(argparse.ArgumentParser):
    def error(self, message):
        self.print_help()
        self.exit(2, f"错误: {message}\n")


def parse_arguments():
    # 创建参数解析器（禁用默认的-h参数）
    parser = ChineseArgumentParser(description='KCD II MOD打包器', add_help=False)
    # 手动添加自定义-h参数
    parser.add_argument('-h', '--help', action='help',
                        help='显示当前工具的帮助信息并退出')  # 自定义描述内容
    # 添加位置参数（必选）
    parser.add_argument('-i', '--input_dir', type=str, default=DEFAULT_CONFIG.get('input_dir'),
                        help='MOD源码文件夹路径(可选,默认当前文件夹)')

    # 添加可选参数（带默认值）
    parser.add_argument('-o', '--output_dir', type=str, default=DEFAULT_CONFIG.get('output_dir'),
                        help='MOD打包文件夹路径（可选，默认上级文件夹下的.dist文件夹）')
    # 是否生成压缩包
    parser.add_argument('-z', '--zip', action='store_true', default=DEFAULT_CONFIG.get('zip'),
                        help=f'是否生成压缩包（可选，默认{'生成' if DEFAULT_CONFIG.get('zip') else '不生成'}）')
    # 生成后是否删除输出文件夹
    parser.add_argument('-d', '--delete', action='store_true', default=DEFAULT_CONFIG.get('del'),
                        help=f'生成后是否删除输出文件夹（可选，默认{'删除' if DEFAULT_CONFIG.get('del') else '不删除'}）')

    # 添加布尔标志（--verbose启用，--no-verbose禁用）
    parser.add_argument('--verbose', action='store_true', default=DEFAULT_CONFIG.get('verbose'),
                        help=f'启用详细输出模式,默认{'启用' if DEFAULT_CONFIG.get('verbose') else '禁用'}')
    parser.add_argument('--no-verbose', action='store_false', dest='verbose', help='禁用详细输出模式')

    # 解析参数
    parse_args = parser.parse_args()
    return parse_args


if __name__ == '__main__':
    args = parse_arguments()
    print('解析到的参数：')
    print(f'输入文件: {args.input_dir}')
    print(f'输出文件: {args.output_dir}')
    print(f'详细模式: {"启用" if args.verbose else "禁用"}')
    print(f'语言前缀: {args.lang_prefix}')
